package cn.neusoft.controller;

import cn.neusoft.vo.ResultBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.UUID;

@RestController
public class UploadController {


	@Value("${uploadlocation}")
	String uploadlocation;

	@Value("${serverpath}")
	String serverpath;

	/*
	MultipartFile 将上传上来的文件封装成这个类型
	 */
	@PostMapping("/upload")
	// 必须要有MultipartFile类型参数。而且参数名必须与表单file控件名一致
	//在postman上进行测试的时候，就必须让key的名字和myFile保持一致，否则就会进行报错
	public ResultBean upload(MultipartFile myFile) {
		//上传图片存储目录
//        String path = "d:/upload1118";
		//获取文件名并使用UUID生成新文件名     73482hdksakd398aa.png
		System.out.println(myFile);
		String fileName = myFile.getOriginalFilename();
		String newFileName = UUID.randomUUID().toString().replaceAll("-","") + fileName;
		//在指定上传图片存储目录中创建新文件    d:/upload1118/73482hdksakd398aa.png
		File targetFile = new File(uploadlocation, newFileName);
		//如果找不到指定目录和文件，就新创建此目录和文件
		if (!targetFile.getParentFile().exists()) {
			targetFile.getParentFile().mkdirs();
		}
		//将文件写入硬盘（myFile在内存中）
		try {
			myFile.transferTo(targetFile); //复制文件
			///img/+newFileName
			String imgUrl = serverpath+"/img/"+newFileName;
			return ResultBean.SUCCESS(imgUrl);
		} catch (Exception e) {
			e.printStackTrace();
			return ResultBean.ERROR(e.getMessage());
		}
	}
}